package com.xxxx.service;

import com.xxxx.entity.User;
import com.xxxx.entity.vo.MessageModel;
import com.xxxx.mapper.UserMapper;
import com.xxxx.util.GetSqlSession;
import com.xxxx.util.StringUtil;
import org.apache.ibatis.session.SqlSession;

/*
用户编辑：
    前台实现：
        编辑页面 JS校验
          1.给立即编辑按钮绑定点击触发事件
          2.获取用户姓名，密码，年龄，宿舍号，性别的值
          3.判断姓名是否为空
            如果姓名为空，提示用户（span赋值）并且return
          4.判断密码是否为空
            如果密码为空，提示用户（span赋值）并且return
          5.如果都不为空
            则手动提交表单
    后台实现：
          1.接受客户端的请求（接收参数：姓名、密码、年龄、宿舍号、性别）
          2.参数的非空判断
            如果姓名、密码为空
                通过消息模型对象返回结果（设置状态、提示信息、回显数据）
                将消息对象模型设置到request作用域中
                请求跳转到注册页面
                return
          3.通过用户姓名对象查询用户对象
          4.判断用户对象是否为空
            如果为空
                通过消息模型返回结果（设置状态、提示信息、回显数据）
                将消息对象模型设置到reque作用域中
                请求跳转到编辑用户页面
                return
          5.将数据库查询到的密码与前台做比较
            如果相等
                 将用户信息添加到数据库中
                 并重定向到login.jsp
            如果不相等
                通过消息模型返回结果（设置状态、提示信息、回显数据）
                将消息对象模型设置到reque作用域中
                请求跳转到编辑用户页面
                return
 */
public class EditService {
    public MessageModel userEdit(String uname,String upwd,Integer age,String uroom,String usex){
        MessageModel messageModel = new MessageModel();
        User u = new User();
        u.setUserName(uname);
        u.setUserPwd(upwd);
        u.setUserAge(age);
        u.setUserRoom(uroom);
        u.setUserSex(usex);
        messageModel.setObject(u);
        /*
        2.参数的非空判断
            如果姓名、密码为空
                通过消息模型对象返回结果（设置状态、提示信息、回显数据）
                将消息对象模型设置到request作用域中
                请求跳转到注册页面
                return
         */
        if (StringUtil.isEmpty(uname) || StringUtil.isEmpty(upwd) ) {
            //将状态码、提示信息、回显数据设置到消息模型对象中，返回消息模型对象
            messageModel.setCode(0);
            messageModel.setMsg("用户姓名和密码不能为空!");
            //回显数据
            return messageModel;
        }
        SqlSession session = GetSqlSession.createSqlSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        User user = userMapper.queryUserByName(uname);
        /*
         4.判断用户对象是否为空
            如果为空
                通过消息模型返回结果（设置状态、提示信息、回显数据）
                将消息对象模型设置到reque作用域中
                请求跳转到编辑用户页面
                return
         */
        if(user==null){
            messageModel.setCode(0);
            messageModel.setMsg("用户不存在，请输入正确的用户名");
            return messageModel;
        }
        /*
         5.将数据库查询到的密码与前台做比较
            如果相等
                 将用户信息添加到数据库中
                 并重定向到login.jsp
            如果不相等
                通过消息模型返回结果（设置状态、提示信息、回显数据）
                将消息对象模型设置到reque作用域中
                请求跳转到编辑用户页面
                return
         */
        if(!upwd.equals(user.getUserPwd())){
            messageModel.setCode(0);
            messageModel.setMsg("用户密码输入错误，更改无效");
            return messageModel;
        }else{
            userMapper.updateUser(age,uroom,usex,uname);
            session.commit();
            return messageModel;
        }
    }
}
